home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
c
/
criterrc.zip
/
CETEST.C
next >
Wrap
C/C++ Source or Header
|
1991-02-17
|
3KB
|
74 lines
#include <errno.h>
#include <stdio.h>
#include "criterr.h"
/* example program to test critical error trap routine */
/* link in module criterr.obj, or add to library */
/* for buffered i/o devices, better flush them otherwise errors */
/* will be delayed until buffer gets written */
/* WRITTEN BY PETER HYMAN, (609) 799-2638 */
void disp_cerr( void ); /* function to display critical error */
main()
{
int i;
FILE *fp;
i = criterr( 1 ); /* trap critical error */
fputs( "abcde", stdprn );
fflush ( stdprn ); /* TAKE PRINTER OFF LINE */
if ( cerr.ceflag )
disp_cerr(); /* show error */
clrcriterr(); /* clear structure */
if ( ( fp = fopen( "a:junk", "w" ) ) == NULL ) /* OPEN DRIVE A DOOR OR PUT A DISK IN */
{
if ( cerr.ceflag )
disp_cerr(); /* show error */
else if ( errno ) /* see if file not found error or such */
printf( "Non Critical Error %d -- %s\n", errno, os_errlist[errno] );
}
if ( criterr( 1 ) ) /* try to turn it on again */
printf( "Critical error handler already installed\n" );
printf( "Critical error trap is now turned off.\n");
i = criterr( 0 ); /* remove trap */
/* now a critical error will be generated by DOS */
fp = fopen( "a:junk", "w" );
}
/*****************************************************************************
* --- void disp_cerr ---
*
* FUNCTION: DISPLAYS CRITICAL ERROR AND RELATED MESSAGES
*****************************************************************************/
void disp_cerr()
{
printf(
" Critical error: %2d -- %s\n\
Critical Error Code in AX (ret by DOS): %X\n\
Device Name: %8s\n\
Drive: %c:\n\
READ or WRITE: %2d -- %s\n\
DISK Area of Error: %2d -- %s\n\
Response Mask: %2d -- %s\n\
Extended Error Number (Dos >= 3): %2d -- %s\n\
Error Class: %2d -- %s\n\
Error Recovery Action Recommendation: %2d -- %s\n\
Error Locus: %2d -- %s\n\n",
cerr.cerrno, crit_errlist[cerr.cerrno], cerr.cerrtype,
cerr.name,cerr.drive,
cerr.read_wr, readwr_list[cerr.read_wr],
cerr.disk_area, diskarea_list[cerr.disk_area],
cerr.resp_mask, respmask_list[cerr.resp_mask],
cerr.exterr,os_errlist[cerr.exterr],
cerr.eclass,err_classlist[cerr.eclass],
cerr.action, err_actionlist[cerr.action],
cerr.locus, err_locuslist[cerr.locus] );
}